package com.yilin.tms.gps.service;

import com.yilin.tms.core.entity.gps.gaode.GeoCalResult;
import com.yilin.tms.core.entity.gps.gaode.geo_track.GeoLocation;
import com.yilin.tms.core.entity.gps.gaode.geo_track.GeoPointTrack;
import com.yilin.tms.core.entity.order.transit.TransitOrder;
import com.yilin.tms.core.entity.user.account.Account;
import com.yilin.tms.core.entity.user.hatch.HatchGaodeMap;
import com.yilin.tms.core.entity.user.hatch.HatchPlatProduct;

import java.util.List;
import java.util.Map;

/**
 * @author liuxu :)
 * @version 1.0
 * @date 2022-8-29 0029
 */
public interface IGaodeWebService {

    HatchGaodeMap getHatchGaode(String platId);

    HatchPlatProduct getHatchPlatProduct(String platId);


    GeoCalResult getDrivingCalculation(String platId, String startCoordinate, String endCoordinate);

    String getPointByAddress(String platId, String address);

    String getAdCodeByAddress(String platId, String address);

    String getAddressByPoint(String platId, String point);

    Map<String, Object> getAddressInfoByPoint(String platId, String point);

    String addTrackService(String gdWebKey, String platCode, String platName);

    void deleteTrackService(String platId, String sid);

    List<Map<String, Object>> getTrackServiceList(String platId);

    String addTrackTerminal(String gdWebKey, String geoTrackSid, String username, String desc);

    List<Map<String, Object>> getTrackTerminalList(String gdWebKey, String geoTrackSid, String terminalName);

    void deleteTrackTerminal(String platId, String sid, String tid);

    String addTrackTrace(String gdWebKey, String sid, String tid, String transportNo);

    String deleteTrackTrace(String platId, String sid, String tid, String traceId);

    void addTracePoints(String platId, String sid, String tid, String traceId, List<GeoLocation> geoLocationList);

    GeoLocation queryTraceLastPoint(String gdWebKey, String serviceId, String terminalId, String traceId);

    GeoPointTrack queryTrackTrace(String gdWebKey, Boolean correction, String serviceId, String terminalId, String traceId, Integer page, Integer limit);

    List<Map<String, Object>> queryDrivingBehavior(String gdWebKey, String serviceId, String terminalId, String traceId);

    List<Map<String, Object>> queryStayPoint(String gdWebKey, String serviceId, String terminalId, String traceId);


    void generateOrderTrajectory(Account loginUser, TransitOrder transitOrder);
}
